// package com.xuyuan.cpn.redis.lock;
//
// import com.xuyuan.util.SpringUtil;
// import org.redisson.api.RLock;
// import org.redisson.api.RedissonClient;
// import org.slf4j.Logger;
// import org.slf4j.LoggerFactory;
// import org.springframework.beans.factory.InitializingBean;
// import org.springframework.stereotype.Component;
//
// import java.util.concurrent.TimeUnit;
//
// @Component
// public class RedissonLockImpl implements DistributedLock, InitializingBean {
//
//     private static final Logger logger = LoggerFactory.getLogger(RedissonLockImpl.class);
//
//     private RedissonClient redisson;
//
//     @Override
//     public Boolean tryGetDistributedLock(String lockKey, String requestId, int expireTime) {
//         RLock lock = redisson.getLock(lockKey);
//         try {
//             boolean isLocked = lock.tryLock(expireTime, 0, TimeUnit.SECONDS);
//             if (isLocked) {
//                 logger.info("成功获取Redisson分布式锁，锁键: {}, 请求ID: {}", lockKey, requestId);
//             } else {
//                 logger.warn("获取Redisson分布式锁失败，锁键: {}, 请求ID: {}", lockKey, requestId);
//             }
//             return isLocked;
//         } catch (InterruptedException e) {
//             logger.error("获取Redisson分布式锁时线程中断，锁键: {}, 请求ID: {}", lockKey, requestId, e);
//             Thread.currentThread().interrupt();
//             return false;
//         }
//     }
//
//     @Override
//     public Boolean releaseDistributedLock(String lockKey, String requestId) {
//         RLock lock = redisson.getLock(lockKey);
//         if (lock.isHeldByCurrentThread()) {
//             lock.unlock();
//             logger.info("成功释放Redisson分布式锁，锁键: {}, 请求ID: {}", lockKey, requestId);
//             return true;
//         } else {
//             logger.warn("尝试释放未持有的Redisson分布式锁，锁键: {}, 请求ID: {}", lockKey, requestId);
//             return false;
//         }
//     }
//
//     @Override
//     public void afterPropertiesSet() throws Exception {
//         redisson = SpringUtil.getBean(RedissonClient.class);
//         if (redisson == null) {
//             logger.error("RedissonClient 未初始化");
//             throw new IllegalStateException("RedissonClient 未初始化");
//         }
//         logger.info("RedissonClient 初始化成功");
//     }
// }
